package com.whfc.ms.api.mach.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.fuum.entity.SysUser;
import com.whfc.mach.MachOilAddDel;
import com.whfc.mach.dto.AppMachOilRecordDTO;
import com.whfc.mach.entity.AppDeviceObdLog;
import com.whfc.mach.param.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Date;

/**
 * @author sun_guodong
 * @description
 * @date 2020-11-11
 */
public interface MsMachService {
    /**
     * 添加设备
     *
     * @param param
     */
    void add(MachAddParam param);

    /**
     * 编辑设备
     *
     * @param param
     */
    void edit(MachEditParam param);

    /**
     * 编辑设备油箱
     *
     * @param param
     */
    void editMachTank(MachTankEditParam param);

    /**
     * 导出设备信息
     *
     * @param deptId
     * @return
     */
    OssPathDTO export(Integer deptId);

    /**
     * 导出电力设备信息
     *
     * @param deptId
     * @return
     */
    OssPathDTO exportObd(Integer deptId);

    /**
     * 设备进场
     *
     * @param machId
     */
    void enter(Integer machId);

    /**
     * 设备退场
     *
     * @param machId
     */
    void outer(Integer machId);

    /**
     * 删除设备
     *
     * @param machId
     */
    void del(Integer machId);

    /**
     * 设备绑定硬件
     *
     * @param user
     * @param request
     */
    void bind(SysUser user, DeviceMachBindParam request);

    /**
     * 设备解除绑定硬件
     *
     * @param user
     * @param machId
     */
    void unbind(SysUser user, Integer machId);

    /**
     * 后台上传设备图片到服务器
     *
     * @param file
     * @return
     * @throws IOException
     */
    OssPathDTO uploadImg(MultipartFile file) throws IOException;

    /**
     * 标定设备加油量
     *
     * @param param
     */
    @Deprecated
    void setOilAdd(MachSetOilAddParam param);

    /**
     * 获取标定设备加油量详情
     *
     * @param machId
     * @param date
     * @return
     */
    @Deprecated
    ListData<MachOilAdd> getOilAdd(Integer machId, Date date);

    PageData<AppMachOilRecordDTO> getOilAddRecord(Integer deptId, Date startDate, Date endDate, String keyword, Integer pageNum, Integer pageSize);

    PageData<AppMachOilRecordDTO> getOilAddRecord(Integer machId, Date startDate, Date endDate, Integer pageNum, Integer pageSize);

    void addOilManual(MachOilAddManual param);

    void addOilAdjust(MachOilAddAdjust param);

    void delOilRecord(MachOilAddDel param);

    /**
     * add obd data
     *
     * @param appDeviceObdLog
     */
    void addObdData(AppDeviceObdLog appDeviceObdLog);

    /**
     * 发送开关机指令
     *
     * @param machCmdParam
     */
    void sendCmd(MachCmdParam machCmdParam);
}
